package com.me.adventures.pruebas;
import java.util.ArrayList;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.math.Vector2;
import com.me.adventures.characters.*;
import com.me.adventures.main.AdventuresOfManuel;
import com.me.adventures.screens.Nivel;
public class NivelTest extends Nivel {
private BitmapFont font;
private int eleccion, disparos;
private boolean primerMovimientoDerecha, primerMovimientoIzquierda, primerMovimientoArriba, primerMovimientoAbajo, colisionRoca,
corazonPrimero, disparar, cofreAbierto, terminar;
public NivelTest(AdventuresOfManuel adventures, Vector2 posicionManuel) {
super(adventures, posicionManuel);
font = new BitmapFont(Gdx.files.internal("arial.fnt"), Gdx.files.internal("arial.png"), false);
primerMovimientoDerecha = true;
terminar = cofreAbierto = disparar = corazonPrimero = primerMovimientoIzquierda = primerMovimientoArriba = primerMovimientoAbajo = colisionRoca = false;
eleccion = 0;
}
@Override
protected void objetosDelNivel() {
objetos = new ArrayList<ObjetoDelJuego>();
corazones = new ArrayList<Corazon>();
//Se introducen las paredes del nivel
objetos.add(new Pared(adventures, new Vector2(0, 0), 1024, 58));
objetos.add(new Pared(adventures, new Vector2(135, 0), 58, 754));
objetos.add(new Pared(adventures, new Vector2(135, 696), 406, 58));
objetos.add(new Pared(adventures, new Vector2(541, 725), 58, 29));
salida = new Salida(adventures, new Vector2(483,696), 0, 0); // El 0 es Puerta
objetos.add(new Pared(adventures, new Vector2(599, 696), 290, 58));
objetos.add(new Pared(adventures, new Vector2(831, 0), 58, 754));
objetos.add(new Roca(adventures, new Vector2(657, 522)));
corazones.add(new Corazon(adventures, new Vector2(773,406), 2)); //otorga 2 proyectiles
cofre = new Cofre(adventures, new Vector2(425,116), 2);
}
@Override
protected void personajesDelNivel() {
personajes = new ArrayList<PersonajeDelJuegoEnemigo>();
//personajes.add(new Serpiente(new Vector2(541,348), manuel));
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// Actualizamos personajes pantalla
manuel.update();
for(PersonajeDelJuego personaje : personajes){
personaje.update();
}
for(int i = 0; i < personajesMovibles.size(); i++){
personajesMovibles.get(i).moverEnBola();
personajesMovibles.get(i).update();
}
// Pintamos la pantalla
batch.begin();
batch.draw(TexturaFondo, 135, 0, TexturaFondo.getWidth(), TexturaFondo.getHeight());
movimientos();
rocaColision();
corazon();
disparar();
gema();
terminar();
manuel.draw(batch);
batch.end();
}
private void terminar() {
if(terminar){
for(ObjetoDelJuego objeto : objetos)
objeto.draw(batch);
salida.draw(batch);
cofre.draw(batch);
if(manuel.getPosicion().x == salida.getPosicion().x + 58 && manuel.getPosicion().y == salida.getPosicion().y - 29){
terminar = false;
adventures.pruebaSuperada();
}
}
}
private void gema() {
if(cofreAbierto){
for(ObjetoDelJuego objeto : objetos)
objeto.draw(batch);
font.draw(batch, "Coge la gema", 367, 638);
salida.draw(batch);
cofre.draw(batch);
if(cofre.getBordes().overlaps(manuel.getBordes())){
cofre.cogerGema();
salida.abrirSalida();
dibujar();
}
}
}
private void disparar() {
if(disparar){
for(ObjetoDelJuego objeto : objetos)
objeto.draw(batch);
salida.draw(batch);
cofre.draw(batch);
font.draw(batch, "Corazon cogido! Dispara proyectiles", 367, 638);
if(disparos != 0){
if(Gdx.input.isKeyPressed(Keys.SPACE)){
disparos--;
}
}
else{
dibujar();
}
}
}
private void corazon() {
if(corazonPrimero){
for(ObjetoDelJuego objeto : objetos)
objeto.draw(batch);
salida.draw(batch);
cofre.draw(batch);
font.draw(batch, "Colisionaste! Ahora coge el corazon", 367, 638);
for(Corazon corazon : corazones)
corazon.draw(batch);
if(colisiones.colisionCorazon(manuel)){
dibujar();
}
}
}
private void rocaColision() {
if(colisionRoca){
font.draw(batch, "Muevete y atraviesa la roca", 367, 638);
for(ObjetoDelJuego objeto : objetos)
objeto.draw(batch);
if(colisiones.colisionDerechaObjeto(manuel) || colisiones.colisionIzquierdaObjeto(manuel) || colisiones.colisionArribaObjeto(manuel) || colisiones.colisionAbajoObjeto(manuel)){
eleccion = 3;
dibujar();
}
}
}
private void movimientos() {
if(primerMovimientoDerecha){
font.draw(batch, "Muevete a la derecha", 367, 638);
if(Gdx.input.isKeyPressed(Keys.RIGHT)){
dibujar();
}
}
if(primerMovimientoIzquierda){
font.draw(batch, "Muevete a la izquierda", 367, 638);
if(Gdx.input.isKeyPressed(Keys.LEFT)){
dibujar();
}
}
if(primerMovimientoArriba){
font.draw(batch, "Muevete arriba", 367, 638);
if(Gdx.input.isKeyPressed(Keys.UP)){
dibujar();
}
}
if(primerMovimientoAbajo){
font.draw(batch, "Muevete abajo", 367, 638);
if(Gdx.input.isKeyPressed(Keys.DOWN)){
dibujar();
primerMovimientoAbajo = false;
colisionRoca = true;
}
}
}
private void dibujar(){
switch(eleccion){
case 0:
font.draw(batch, "Muevete a la izquierda", 367, 638);
primerMovimientoDerecha = false;
primerMovimientoIzquierda = true;
eleccion = 1;
break;
case 1:
font.draw(batch, "Muevete arriba", 367, 638);
primerMovimientoIzquierda = false;
primerMovimientoArriba = true;
eleccion = 2;
break;
case 2:
font.draw(batch, "Muevete abajo", 367, 638);
primerMovimientoArriba = false;
primerMovimientoAbajo = true;
break;
case 3:
font.draw(batch, "Colisionaste! Ahora coge el corazon", 367, 638);
colisionRoca = false;
corazonPrimero = true;
for(Corazon corazon : corazones)
corazon.draw(batch);
colisiones = new Colision(adventures, manuel, personajes, objetos, personajesMovibles, corazones, cofre, salida, objetosEnemigos);
eleccion = 4;
break;
case 4:
font.draw(batch, "Corazon cogido! Dispara proyectiles", 367, 638);
corazonPrimero = false;
cofre.abrirCofre();
disparar = true;
eleccion = 5;
disparos = 2;
break;
case 5:
disparar = false;
cofreAbierto = true;
font.draw(batch, "Coge la gema.", 367, 638);
eleccion = 6;
break;
case 6:
cofreAbierto = false;
terminar = true;
break;
}
}
@Override
public void resize(int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void show() {
// TODO Auto-generated method stub
}
@Override
public void hide() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
protected void mapaDelNivel() {
// TODO Auto-generated method stub
}
}